﻿using System.Collections.Generic;
using System.Windows.Forms;
using Business.Enum;
using Business.Forms;
using NHibernate;
using NHibernate.Criterion;

namespace Business.Entity.Estoque.Produto
{
    public class ProdutoRepository : Business.RepositoryBase<Produto>
    {
        public static void BaixarQuantidadeProduto(ISession session, Produto produto, decimal quantidade)
        {
            
        }
        public static IList<Produto> GetByDescricao(string param)
        {
            return GetList(Restrictions.InsensitiveLike("Descricao", "%" + param + "%"));
        }

        public static IList<Produto> GetByCodBarra(string param)
        {
            return GetList(Restrictions.InsensitiveLike("CodBarra", param));
        }

        public static IList<Produto> GetByReferencia(string param)
        {
            return GetList(Restrictions.InsensitiveLike("Referencia", param));
        }

        


        public static  IList<Produto> GetProducaoPropriaByDescricao(string descricao)
        {
            var crit = Restrictions.Conjunction().
                Add(Restrictions.InsensitiveLike("Descricao", "%" + descricao + "%"))
                .Add(Restrictions.Eq("Ippt",Ippt.Propria));
            return GetList(crit);
        }
        public static IList<Produto> GetProducaoPropriaByReferencia(string referencia)
        {
            var crit = Restrictions.Conjunction().
                Add(Restrictions.InsensitiveLike("Referencia", referencia))
                .Add(Restrictions.Eq("Ippt", Ippt.Propria));
            return GetList(crit);
        }
        public static IList<Produto> GetProducaoPropriaByCodBarra(string codBarra)
        {
            var crit = Restrictions.Conjunction().
                Add(Restrictions.InsensitiveLike("CodBarra", codBarra))
                .Add(Restrictions.Eq("Ippt", Ippt.Propria));
            return GetList(crit);
        }
    }
}
